package modelo;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;

import ViewObjects.ClienteView;

@Entity
public class Cliente {
	@Id
	private int idCliente;
	private String razonSocial;
	private String direccion;
	private String telefono;
	@ManyToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "idCliente")
	private Set<CondicionPago> condicionesPago;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "idCliente")
	private List<SolicitudCotizacion> solicitudesCotizacion;

	/*
	 * @OneToMany(cascade = CascadeType.ALL)
	 * 
	 * @JoinColumn(name="idCliente") private List<OrdenPedido> ordenesPedidos;
	 * 
	 * @OneToMany(cascade = CascadeType.ALL)
	 * 
	 * @JoinColumn(name="idCliente") private List<Factura> facturas;
	 */

	public Cliente(int idCli, String razonSocial2, String direccion2,
			String telefono2) {
		// TODO Auto-generated constructor stub
		this.idCliente = idCli;
		this.razonSocial = razonSocial2;
		this.direccion = direccion2;
		this.telefono = telefono2;
		this.condicionesPago = new HashSet<CondicionPago>();
		this.solicitudesCotizacion = new ArrayList<SolicitudCotizacion>();
		// this.facturas = new ArrayList<Factura>();
		// this.ordenesPedidos = new ArrayList<OrdenPedido>();
	}

	public int getIdCliente() {
		return idCliente;
	}

	public void setIdCliente(int idCliente) {
		this.idCliente = idCliente;
	}

	public String getRazonSocial() {
		return razonSocial;
	}

	public void setRazonSocial(String razonSocial) {
		this.razonSocial = razonSocial;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public Set<CondicionPago> getCondicionesPago() {
		return condicionesPago;
	}

	public void setCondicionesPago(Set<CondicionPago> condicionesPago) {
		this.condicionesPago = condicionesPago;
	}

	public List<SolicitudCotizacion> getSolicitudesCotizacion() {
		return solicitudesCotizacion;
	}

	public void setSolicitudesCotizacion(
			List<SolicitudCotizacion> solicitudesCotizacion) {
		this.solicitudesCotizacion = solicitudesCotizacion;
	}

	public void modificarCliente(String razonSocial2, String direccion2,
			String telefono2) {

		this.razonSocial = razonSocial2;
		this.direccion = direccion2;
		this.telefono = telefono2;
	}

	public ClienteView crearClienteView() {
		return new ClienteView(this.idCliente, this.razonSocial,
				this.direccion, this.telefono);
	}

}
